import { http } from '../utils/http'

/**
 * 认证相关 API
 */
export const AuthApi = {
  /**
   * 使用用户名密码登录
   * @param params 登录参数
   * @returns 登录结果
   */
  login: (params: { username: string; password: string }) => {
    return http.post('/app/auth/login', params)
  },

  /**
   * 登出系统
   * @returns 登出结果
   */
  logout: () => {
    return http.post('/app/auth/logout', {})
  },

  /**
   * 刷新令牌
   * @param refreshToken 刷新令牌
   * @returns 新的令牌
   */
  refreshToken: (refreshToken: string) => {
    return http.post(`/app/auth/refresh-token?refreshToken=${refreshToken}`)
  },

  /**
   * 使用手机号和验证码登录
   * @param params 登录参数
   * @returns 登录结果
   */
  smsLogin: (params: { mobile: string; code: string }) => {
    return http.post('/app/auth/sms-login', params)
  },

  /**
   * 发送手机验证码
   * @param params 发送验证码参数
   * @returns 发送结果
   */
  sendSmsCode: (params: { mobile: string; scene: number }) => {
    return http.post('/app/auth/send-sms-code', params)
  },

  /**
   * 校验手机验证码
   * @param params 校验参数
   * @returns 校验结果
   */
  validateSmsCode: (params: { mobile: string; code: string }) => {
    return http.post('/app/auth/validate-sms-code', params)
  },

  /**
   * 社交授权跳转
   * @param type 社交类型
   * @param redirectUri 回调地址
   * @returns 授权URL
   */
  socialAuthRedirect: (type: number, redirectUri: string) => {
    return http.get('/app/auth/social-auth-redirect', { type, redirectUri })
  },

  /**
   * 社交登录
   * @param params 登录参数
   * @returns 登录结果
   */
  socialLogin: (params: { type: number; code: string; state: string }) => {
    return http.post('/app/auth/social-login', params)
  },

  /**
   * 微信小程序一键登录
   * @param params 登录参数
   * @returns 登录结果
   */
  weixinMiniAppLogin: (params: { code: string; encryptedData: string; iv: string }) => {
    return http.post('/app/auth/weixin-mini-app-login', params)
  },

  /**
   * 创建微信 JS SDK 初始化所需的签名
   * @param url 当前页面URL
   * @returns 签名信息
   */
  createWeixinJsapiSignature: (url: string) => {
    return http.post('/app/auth/create-weixin-jsapi-signature', { url })
  }
}
